from .basic import CatalogBasic, CatalogForm

class CatalogTableFrom(CatalogForm):
    def __init__(self, table_name: str, columns, types):
        super().__init__()
        self.table_name = table_name
        assert len(columns) == len(types)
        self.columns = columns
        self.types = types
        # 这里面没有包括约束条件：例如，是否可以为null，是否为主键，是否唯一...
        # 以及后面可能还会加其他信息，例如是不是用到索引了，表大约用了多少行数据
    
    def __repr__(self):
        fields = []
        for column_name, type_name in zip(self.columns, self.types):
            fields.append(f'{column_name} {type_name.__name__}')

        # 做一个美化效果，可以返回该表的schema，通过create table语句
        return f'CREATE TABLE {self.table_name} ({", ".join(fields)});'

class CatalogTable(CatalogBasic):
    def __init__(self):
        super().__init__('table_information')